/*实用工具类的实现：
    1.获取系统时间
    2.判断文件是否存在
    3.获取文件所在路径
    4.创建目录
*/
#ifndef __MY_UTIL__
#define __MY_UTIL__
#include <iostream>
#include <ctime>
#include<unistd.h>
#include<sys/stat.h>
namespace zylog{
    namespace util{
        class Date{
            public:
            static size_t now(){
                return (size_t)time(nullptr);
            }
        };
        
        class File{
            public:
            static bool exists(const std::string &pathname){
                // Linux系统调用return (access(pathname.c_str(),F_OK)==0);
                struct stat st;
                if(stat(pathname.c_str(),&st)<0){
                    return false;
                }
                return true;
            }
            static std::string path(const std::string &pathname){
                size_t pos=pathname.find_last_of("/\\");
                if(pos==std::string::npos) return ".";
                return pathname.substr(0,pos+1);
            }
            static void createDirectory(const std::string &pathname){
               size_t pos=0,idx=0;
               while(idx<pathname.size()){
               pos=pathname.find_first_of("/\\",idx);
               if(pos==std::string::npos){
                mkdir(pathname.c_str(),0777);
               }
               std::string parent_dir=pathname.substr(0,pos+1);
               if(exists(parent_dir)==true){
                idx=pos+1;
                continue;
               }
               mkdir(parent_dir.c_str(),0777);
               idx=pos+1;
              }
            }
        };
    
    }
}
#endif